/**
 * http请求拦截器封装
 * @param Vue
 * @param vm
 * @author zhp
 * @url /common/http.interceptor.js
 */
// 这里的vm，就是我们在vue文件里面的this，所以我们能在这里获取vuex的变量，比如存放在里面的token变量
import store from '../store';
import {
	HTTP_SHOPPING_URL,
	HTTP_REQUEST_URL
} from '@/config/app';
import app from '@/main'

import { isMessageGo,validToken} from '@/assets/public.js';


// const store.state.version2 = '1.4.0';

const install = (Vue, vm) => {
	// 此为自定义配置参数，具体参数见上方说明
	console.log(process.env.NODE_ENV, 'process.env.NODE_ENV')
	Vue.prototype.$u.http.setConfig({
		// #ifdef H5
		baseUrl: process.env.NODE_ENV == 'development' ? "./api" : HTTP_SHOPPING_URL,
		// #endif
		// #ifndef H5
		baseUrl: HTTP_SHOPPING_URL,
		// #endif
		loadingText: '',
		method: 'POST',
		dataType: 'json', // 设置为json，返回后会对数据进行一次JSON.parse()
		showLoading: true, // 是否显示请求中的loading
		loadingTime: 1000, // 在此时间内，请求还没回来的话，就显示加载中动画，单位ms
		originalData: true, // 是否在拦截器中返回服务端的原始数据
		loadingMask: true, // 展示loading的时候，是否给一个透明的蒙层，防止触摸穿透
		// 配置请求头信息
		header: {
			'content-type': 'application/json;charset=UTF-8'
		},
	});

	// 请求拦截，配置Token等参数
	Vue.prototype.$u.http.interceptor.request = async (config) => {
		const token = uni.getStorageSync('xzdToken') || "";
		const mobile = uni.getStorageSync('mobile');
	


		if (config.data.needLogin === true) {
			// 获取token
			if (!token || !mobile) {
				vm.$u.toast(app.$i18n.t('请先登录'));
				isMessageGo({
					action: 'login'
				})
				// setTimeout(() => {
				// 	// 此为uView的方法，详见路由相关文档
				// 	vm.$u.route('/pages/user/login/login')
				// }, 1000)
				return false; // 取消本次请求
			}
		} 

		config.header.token = token || '';

		// config.header.token = '';
		const lang = uni.getStorageSync('lang');
		// config.data.lang = lang
		config.data.scene = 1001
		config.data.aid = 1

			// 登录判断
			try {
				let res = await validToken();
				console.log(res.data.code,'res.data.code')
				if (res.data.code == 4001) {
					return false;
				}
			} catch (error) {
				return false;
			}



		// uni.setStorage({
		// 	key: 'version',
		// 	data: store.state.version
		// })
		// uni.setStorageSync('version', store.state.version)

		return config;
	}
	let plang = (key) => {
		let isZh = uni.getStorageSync("lang") == 'zh'
		return isZh ? key : key + '_ru'
	}
	// 响应拦截，判断状态码是否通过
	Vue.prototype.$u.http.interceptor.response = (res) => {
		console.log(res,'参数')
		if (res.statusCode == 200) { // 成功
			if (res.data.code == 1  || res.data.code == 200 || res.data.status == 1) {
				return res.data;
			} else if (res.data.code == 401) {
				// token过期
				vm.$u.toast(app.$i18n.t('请先登录'));
				uni.clearStorage();
				uni.clearStorageSync();
		
				isMessageGo({
					action: 'login'
				})
				return false;
			} else if (res.data.code == -1 || res.data.status == 0 || res.data.code == 0) {
				uni.showToast({
					title: res.data[plang('msg')] || res.data.msg,
					icon: 'none',
				})
				return false;
			}
		} else {
			// uni.showToast({
			// 	title:  res,
			// 	icon: 'none',
			// })
			// 服务器错误
		}

	}
}

export default {
	install
}